.\" Man page generated from reStructuredText.
.
.TH "CEPH-DENCODER" "8" "Jan 23, 2022" "dev" "Ceph"
.SH NAME
ceph-dencoder \- ceph encoder/decoder utility
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.SH 提纲
.nf
\fBceph\-dencoder\fP [commands...]
.fi
.sp
.SH 描述
.sp
\fBceph\-dencoder\fP 工具用来编码、解码和转储 Ceph 数据结构。
常用于调试或测试版本间的兼容性。
.sp
\fBceph\-dencoder\fP 只是简单地读入命令列表并依次执行。
.SH 命令
.INDENT 0.0
.TP
.B version
打印 \fBceph\-dencoder\fP 二进制程序的版本字符串。
.UNINDENT
.INDENT 0.0
.TP
.B import <file>
从指定文件读入已编码的二进制数据块。
它将被放入内存驻留缓冲。
.UNINDENT
.INDENT 0.0
.TP
.B export <file>
把当前内存驻留缓冲的内容写入指定文件。
.UNINDENT
.INDENT 0.0
.TP
.B list_types
列出此 \fBceph\-dencoder\fP 程序已知的所有数据类型。
.UNINDENT
.INDENT 0.0
.TP
.B type <name>
为即将进行的 \fBencode\fP 或 \fBdecode\fP 操作指定类型。
.UNINDENT
.INDENT 0.0
.TP
.B skip <bytes>
导入的文件先找到 <bytes> 字节处再开始读数据结构，
当对象中感兴趣的部分之前有前同步码或头部时可加此选项。
.UNINDENT
.INDENT 0.0
.TP
.B decode
把内存驻留缓冲中的内容解码为之前选定类型的例程。
若遇到错误，则只报告。
.UNINDENT
.INDENT 0.0
.TP
.B encode
把之前选定类型的驻留内存例程编码为驻留内存缓冲。
.UNINDENT
.INDENT 0.0
.TP
.B dump_json
打印内存驻留对象 JSON 格式的描述。
.UNINDENT
.INDENT 0.0
.TP
.B count_tests
打印出之前选定类型、且 \fBceph\-dencoder\fP 支持的内建测试例程数量。
.UNINDENT
.INDENT 0.0
.TP
.B select_test <n>
用指定的内建测试例程作为同类型的内存驻留例程。
.UNINDENT
.INDENT 0.0
.TP
.B get_features
打印此版本 \fBceph\-dencoder\fP 所支持功能集的十进制值。
每一位表示一个功能，它们对应于
src/include/ceph_features.h 中定义的 CEPH_FEATURE_* 。
.UNINDENT
.INDENT 0.0
.TP
.B set_features <f>
把提供给 \fBencode\fP 的功能位设置为 \fIf\fP 。
设置了此选项你就能编码出旧版软件可理解的对象（它所支持的类型）。
.UNINDENT
.SH 实例
.sp
比如你想检查 \fBceph\-osd\fP 存储的一对象的一个属性，可以这样：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
$ cd /mnt/osd.12/current/2.b_head
$ attr \-l foo_bar_head_EFE6384B
Attribute "ceph.snapset" has a 31 byte value for foo_bar_head_EFE6384B
Attribute "ceph._" has a 195 byte value for foo_bar_head_EFE6384B
$ attr foo_bar_head_EFE6384B \-g ceph._ \-q > /tmp/a
$ ceph\-dencoder type object_info_t import /tmp/a decode dump_json
{ "oid": { "oid": "foo",
      "key": "bar",
      "snapid": \-2,
      "hash": 4024842315,
      "max": 0},
  "locator": { "pool": 2,
      "preferred": \-1,
      "key": "bar"},
  "category": "",
  "version": "9\(aq1",
  "prior_version": "0\(aq0",
  "last_reqid": "client.4116.0:1",
  "size": 1681,
  "mtime": "2012\-02\-21 08:58:23.666639",
  "lost": 0,
  "wrlock_by": "unknown.0.0:0",
  "snaps": [],
  "truncate_seq": 0,
  "truncate_size": 0,
  "watchers": {}}
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
或者，你也许想转储一个内部 CephFS 元数据对象，
可以这样：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
$ rados \-p metadata get mds_snaptable mds_snaptable.bin
$ ceph\-dencoder type SnapServer skip 8 import mds_snaptable.bin decode dump_json
{ "snapserver": { "last_snap": 1,
   "pending_noop": [],
   "snaps": [],
   "need_to_purge": {},
   "pending_create": [],
   "pending_destroy": []}}
.ft P
.fi
.UNINDENT
.UNINDENT
.SH 使用范围
.sp
\fBceph\-dencoder\fP 是 Ceph 的一部分，这是个伸缩力强、开源、
分布式的存储系统，更多信息参见 \fI\%https://docs.ceph.com\fP 。
.SH 参考
.sp
ceph(8)
.SH COPYRIGHT
2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0)
.\" Generated by docutils manpage writer.
.
